<?php

class AdmDetalle extends TPage {
//<editor-fold defaultstate="collapsed" desc="Verifica Usuario Logueado">
  /**
   * determina si el usuario esta logueado en el sistema
   * @author VSR, 01/01/2011
   */
  private function usuarioLogueado(){
    $estaLogueado = false;
    try {
      $session = new THttpSession;
      $session->open();
      $oUsuario = $session[Usuario::NOMBRE_ENTIDAD];
      if(isset($oUsuario)){
        $estaLogueado = true;
      }
    } catch (Exception $e) {
      $estaLogueado = false;
    }
    return $estaLogueado;
  }

  /**
   * redirecciona al login
   * @author VSR, 01/01/2011
   */
  private function redireccionarLogin(){
    $this->Response->redirect($this->Service->constructUrl("Admin"));
  }
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Constantes">
  const SESION_DATOS = "arr";
  //funciones pagina
  const FUNCION_VER = "Ver";
  const FUNCION_CREAR = "Crear";
  const FUNCION_EDITAR = "Editar";
  const FUNCION_ELIMINAR = "Eliminar";

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Privados">
  /**
   * obtiene los registros desde la base de datos
   * @author VSR, 01/01/2011
   */
  private function obtenerDatos($idPagina){
    try {
      $nombrePagina = Utilidades::obtenerNombrePaginaActual($this);
      $arr = Pagina::obtenerDetalle($idPagina);
      Utilidades::grabarSessionPorNombre(self::SESION_DATOS.$nombrePagina, $arr);

    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * actualiza los controles de la pagina segun los datos obtenidos
   * @author VSR, 01/01/2011
   */
  private function actualizaInterfaz(){
    $totalRegistros = 0;
    try {
      $nombrePagina = Utilidades::obtenerNombrePaginaActual($this);
      $idPagina = $this->Request["id"];
      $arr = Utilidades::obtenerSessionPorNombre(self::SESION_DATOS.$nombrePagina);

      //inicializa controles en vacio
      $titulo = "";
      $modulo = "";
      $nombreClase = "";
      $nombreCategoria = "";
      $activo = "0";
      $mostrarEnMenu = "";

      if(!is_null($arr)) {
        $totalRegistros = count($arr[Pagina::ARRAY_PAGINA_DETALLE]);
        if($totalRegistros > 0) {
          $row = $arr[Pagina::ARRAY_PAGINA_DETALLE][0];
          $titulo = $row["Titulo"];
          $modulo = $row["Modulo"];
          $nombreClase = $row["NombreClase"];
          $nombreCategoria = $row["NombreCategoria"];
          $activo = $row["Activo"];
          $mostrarEnMenu = $row["MostrarEnMenu"];
        }
      }
      //asigna valores
      if(Utilidades::startsWith($nombreClase, "http")) {
        $urlRegistro = $nombreClase;
      } else {
        $urlRegistro = $this->Request->getAbsoluteApplicationUrl()."?page=".$modulo.".".$nombreClase;
      }
      $this->txtIdPagina->Value = $idPagina;
      $this->txtTitulo->Text = $titulo;
      $this->txtModulo->Text = $modulo;
      $this->txtNombreClase->Text = $nombreClase;
      $this->txtCategoria->Text = $nombreCategoria;
      $this->chkActivo->Checked = ($idPagina == "0") ? true : (($activo == "1" ? true : false));
      $this->chkMostrarEnMenu->Checked = ($idPagina == "0") ? true : (($mostrarEnMenu == "1" ? true : false));
      $this->lblTituloFormulario->Text = (($idPagina == "0") ? "Crear" : "Modificar")." P&aacute;gina";
      $this->pnlEnlaceRegistro->Visible = ($idPagina == "0") ? false : true;
      $this->lblEnlaceRegistro->Text = $urlRegistro;
      //dibuja una tabla con las funciones de la pagina
      $this->hListadoFunciones->Text = $this->dibujarListadoFunciones($idPagina);

      //actualiza el multiselect
      if(!is_null($arr)) {
        $this->msPerfiles->dataSourcePadre($arr[Pagina::ARRAY_PAGINA_LISTADO_PERFILES_NO_PERTENECE]);
        $this->msPerfiles->dataTextFieldPadre("Texto");
        $this->msPerfiles->dataValueFieldPadre("Valor");
        $this->msPerfiles->dataBindPadre();
        $this->msPerfiles->dataSourceHija($arr[Pagina::ARRAY_PAGINA_LISTADO_PERFILES_SI_PERTENECE]);
        $this->msPerfiles->dataTextFieldHija("Texto");
        $this->msPerfiles->dataValueFieldHija("Valor");
        $this->msPerfiles->dataBindHija();
      }

    } catch (Exception $e) {
      $titulo = "";
      $modulo = "";
      $nombreClase = "";
      $nombreCategoria = "";
      $activo = "0";
      $mostrarEnMenu = "";
    }
  }

  /**
   * inicializa algunos controles cuando se carga por primera vez la pagina
   * @param <type> $isPostBack
   * @author VSR, 01/01/2011
   */
  private function inicializaControles($isPostBack){
    try {
      $nombrePagina = $this->obtenerNombrePagina();
      $idPagina = $this->Request["id"];
      $estado = Utilidades::isNull(Utilidades::obtenerSessionPorNombre("Estado".$nombrePagina), "");
      $cargarDesdePopUp = "0";

      if($estado == "INGRESADO" || $estado == "MODIFICADO" || $estado == "ELIMINADO") {
        $cargarDesdePopUp = "1";
      }

      //agrega atributo a control
      $this->btnCrear->Attributes->Add("onclick", "return(validarFormularioPagina())");
      $this->btnAplicar->Attributes->Add("onclick", "return(validarFormularioPagina())");
      $this->btnAceptar->Attributes->Add("onclick", "return(validarFormularioPagina())");
      $this->btnEliminar->Attributes->Add("onclick", "return(validarEliminar())");
      $this->btnCerrar->Attributes->Add("onclick", "cerrarPopUpPagina('','".$cargarDesdePopUp."','')");
      $this->txtModulo->Attributes->Add("onblur", "comprobarDuplicidadDatoPagina('".$idPagina."','".$this->txtExisteNombreClase->ClientID."','".$this->divExisteNombreClase->ClientID."','Pagina.ModuloNombreClase')");
      $this->txtNombreClase->Attributes->Add("onblur", "comprobarDuplicidadDatoPagina('".$idPagina."','".$this->txtExisteNombreClase->ClientID."','".$this->divExisteNombreClase->ClientID."','Pagina.ModuloNombreClase')");

      //inicializa los controles del Correlativo y Locales
      $this->inicializaControlesEventoWindowOnLoad($isPostBack);

      //verifica los permisos sobre los controles
      $this->verificarPermisos();

    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * inicializa los controles al cargar la pagina
   * @param <type> $isPostBack
   * @author VSR, 01/01/2011
   */
  private function inicializaControlesEventoWindowOnLoad($isPostBack) {
    $nombrePagina = $this->obtenerNombrePagina();
    $estado = Utilidades::isNull(Utilidades::obtenerSessionPorNombre("Estado".$nombrePagina), "");
    $sb = new StringBuilder();

    if($estado == "INGRESADO" || $estado == "MODIFICADO" || $estado == "") {
      $sb->appendLine("setTimeout(\"ocultarElemento('".$this->pnlMensajeUsuario->ClientID."')\", 5000);");
    }
    $this->Page->ClientScript->registerEndScript("windowOnLoad", $sb->toString());
  }

  /**
   * verifica los permisos sobre los controles
   * @author VSR, 01/01/2011
   */
  private function verificarPermisos(){
    $paginaActual = Utilidades::obtenerNombrePaginaActual($this);
    $idPagina = $this->Request["id"];
    //verifica los permisos para los controles
    $this->pnlContenido->Visible = Utilidades::tienePermiso($paginaActual, self::FUNCION_VER);
    $this->hBotonCrear->Visible = Utilidades::tienePermiso($paginaActual, self::FUNCION_VER) && $idPagina == "0" && Utilidades::tienePermiso($paginaActual, self::FUNCION_CREAR);
    $this->hBotonAplicar->Visible = Utilidades::tienePermiso($paginaActual, self::FUNCION_VER) && $idPagina != "0" && Utilidades::tienePermiso($paginaActual, self::FUNCION_EDITAR);
    $this->hBotonAceptar->Visible = Utilidades::tienePermiso($paginaActual, self::FUNCION_VER) && $idPagina != "0" && Utilidades::tienePermiso($paginaActual, self::FUNCION_EDITAR);
    $this->hBotonEliminar->Visible = Utilidades::tienePermiso($paginaActual, self::FUNCION_VER) && $idPagina != "0" && Utilidades::tienePermiso($paginaActual, self::FUNCION_ELIMINAR);

    if(!$this->pnlContenido->Visible) {
      $this->pnlMensajeAcceso->Visible = true;
      Utilidades::setPanelMensajeUsuario($this->pnlMensajeAcceso, "No tiene permiso para ver esta p&aacute;gina", "50%", Utilidades::ESTILO_MENSAJE_ERROR);
    }
  }

  /**
   * muestra mensaje al usuario
   * @author VSR, 01/01/2011
   */
  private function mostrarMensajeUsuario(){
    try {
      $mensaje = Utilidades::isNull(Utilidades::obtenerSessionPorNombre("msg"),"");
      $baseUrl = $this->Page->Theme->BaseUrl;

      //asigna mensaje al panel
      $this->pnlMensajeUsuario->Visible = true;

      //dependiendo de la marca especial que tenga el sistema es como se muestra el mensaje al usuario
      if(strpos($mensaje, "{#INGRESADO}") === 0) {
        $mensaje = str_replace("{#INGRESADO}", "", $mensaje);
        Utilidades::setPanelMensajeUsuarioConBotonCerrar($this->pnlMensajeUsuario, $mensaje, "100%", Utilidades::ESTILO_MENSAJE_EXITO, $baseUrl);
      } elseif (strpos($mensaje, "{#MODIFICADO}") === 0) {
        $mensaje = str_replace("{#MODIFICADO}", "", $mensaje);
        Utilidades::setPanelMensajeUsuarioConBotonCerrar($this->pnlMensajeUsuario, $mensaje, "100%", Utilidades::ESTILO_MENSAJE_EXITO, $baseUrl);
      } elseif (strpos($mensaje, "{#ELIMINADO}") === 0) {
        $mensaje = str_replace("{#ELIMINADO}", "", $mensaje);
        Utilidades::setPanelMensajeUsuarioConBotonCerrar($this->pnlMensajeUsuario, $mensaje, "100%", Utilidades::ESTILO_MENSAJE_EXITO, $baseUrl);
      } elseif (strpos($mensaje, "{#DUPLICADO}") === 0) {
        $mensaje = str_replace("{#DUPLICADO}", "", $mensaje);
        Utilidades::setPanelMensajeUsuario($this->pnlMensajeUsuario, $mensaje, "100%", Utilidades::ESTILO_MENSAJE_ERROR);
      } elseif (strpos($mensaje, "{#ERROR}") === 0) {
        $mensaje = str_replace("{#ERROR}", "", $mensaje);
        Utilidades::setPanelMensajeUsuario($this->pnlMensajeUsuario, $mensaje, "100%", Utilidades::ESTILO_MENSAJE_ERROR);
      } else {
        $this->pnlMensajeUsuario->Visible = false;
      }
      Utilidades::grabarSessionPorNombre("msg", "");
    } catch (Exception $e) {
      $this->pnlMensajeUsuario->Visible = false;
    }

  }

  /**
   * obtiene nombre de la pagina actual
   * @return <type>
   * @author VSR, 01/01/2011
   */
  private function obtenerNombrePagina(){
    $nombrePagina = Utilidades::obtenerNombrePaginaActual($this);
    return $nombrePagina;
  }

  /**
   * dibuja las funciones de la pagina en una tabla
   * @param <type> $idPagina
   * @return string
   * @author VSR, 01/01/2011
   */
  private function dibujarListadoFunciones($idPagina) {
    $html = "";
    $totalOpcionesDefecto = 2;
    $sb = new StringBuilder();

    try {
      $nombrePagina = Utilidades::obtenerNombrePaginaActual($this);
      $arr = Utilidades::obtenerSessionPorNombre(self::SESION_DATOS.$nombrePagina);

      //---------------------------------------------------------------------------------
      //si la funcion es nueva entonces muestra la tabla con valores iniciales
      //---------------------------------------------------------------------------------
      if($idPagina == "0") {
        $usarOpcionDefecto = true;
        $totalRegistros = $totalOpcionesDefecto;
      } else {
        if(is_null($arr)) {
          $usarOpcionDefecto = true;
          $totalRegistros = $totalOpcionesDefecto;
        } else {
          //filtra las opciones relacionadas con la pregunta consultada
          $arrFunciones = $arr[Pagina::ARRAY_PAGINA_LISTADO_FUNCIONES];
          $totalRegistros = count($arrFunciones);
          //si no encuentra entonces usa la configuracion por defecto
          if($totalRegistros == 0) {
            $usarOpcionDefecto = true;
            $totalRegistros = $totalOpcionesDefecto;
          } else {
            $usarOpcionDefecto = false;
          }
        }
      }

      //---------------------------------------------------------------------------------
      //dibuja la tabla con los controles
      //---------------------------------------------------------------------------------
      $sb->appendLine("<input type=\"hidden\" name=\"txtTotalFunciones\" id=\"txtTotalFunciones\" value=\"".$totalRegistros."\ style=\"background-color: red;\" />");
      $sb->appendLine("<div class=\"clearBoth cssTablaDatos\">");
      $sb->appendLine("  <table id=\"tablaFunciones\" border=\"0\" cellpadding=\"2\" cellspacing=\"0\" width=\"100%\">");
      $sb->appendLine("    <tr>");
      $sb->appendLine("      <th style=\"width:150px;\">Nombre</th>");
      $sb->appendLine("      <th style=\"width:150px;\">Llave</th>");
      $sb->appendLine("      <th style=\"width:150px;\">Orden</th>");
      $sb->appendLine("      <th style=\"width:50px;\">Eliminar</th>");
      $sb->appendLine("    </tr>");

      //recorre las opciones para dibujarlas
      for($i = 0; $i <= $totalRegistros - 1; $i++) {
        if($usarOpcionDefecto) {
          $idFuncion = "-1";
          $nombre = ($i == 0) ? "Ver" : "";
          $llave = ($i == 0) ? "Ver" : "";
          $orden = ($i == 0) ? "1" : "";
        } else {
          $row = $arrFunciones[$i];
          $idFuncion = $row["IdFuncion"];
          $nombre = $row["Nombre"];
          $llave = $row["LlaveIdentificador"];
          $orden = $row["Orden"];
        }
        $indiceFila = $i + 1;
        $disabled = (strtoupper($nombre) == "VER") ?  " readonly=\"readonly\" " : "";
        $linkEliminar = (!Utilidades::isNullOrEmpty($disabled)) ? "&nbsp;" : "<a href=\"javascript:;\" onclick=\"eliminarFuncion('".$idFuncion."','tablaFunciones',this.parentNode.parentNode.rowIndex,'txtTotalFunciones');\"><span class=\"ico16-eliminar\"><img src=\"".$this->Page->Theme->BaseUrl."/img/_blank.gif\" class=\"ico16Eliminar cursorPointer\" alt=\"eliminar\" title=\"eliminar\" /></span></a>";
        $classInput = (!Utilidades::isNullOrEmpty($disabled)) ? "cssInput readOnly" : "cssInput";

        $sb->appendLine("<tr>");
        $sb->appendLine("  <td>");
        $sb->appendLine("    <input type=\"hidden\" id=\"txtIdFuncionAdd[]\" name=\"txtIdFuncionAdd[]\" value=\"".$idFuncion."\" />");
        $sb->appendLine("    <input type=\"text\" id=\"txtNombreAdd[]\" name=\"txtNombreAdd[]\" value=\"".htmlspecialchars($nombre)."\" class=\"".$classInput."\" style=\"width:97%;\" maxlength=\"100\" ".$disabled." />");
        $sb->appendLine("  </td>");
        $sb->appendLine("  <td><input type=\"text\" id=\"txtLlaveAdd[]\" name=\"txtLlaveAdd[]\" value=\"".htmlspecialchars($llave)."\" style=\"width:97%;\" class=\"".$classInput."\" maxlength=\"100\" ".$disabled." /></td>");
        $sb->appendLine("  <td><input type=\"text\" id=\"txtOrdenAdd[]\" name=\"txtOrdenAdd[]\" value=\"".htmlspecialchars($orden)."\" style=\"width:97%;\" class=\"".$classInput."\" maxlength=\"3\" ".$disabled." /></td>");
        $sb->appendLine("  <td>".$linkEliminar."</td>");
        $sb->appendLine("</tr>");
      }

      $sb->appendLine("  </table>");
      $sb->appendLine("</div>");
      $sb->appendLine("<div id=\"hBotonAgregarFuncion\" class=\"clearBoth\" style=\"text-align:right; padding-right:10px;\">");
      $sb->appendLine("  <span class=\"ico16-agregar\"><img src=\"".$this->Page->Theme->BaseUrl."/img/_blank.gif\" class=\"ico16\" alt=\"\" /></span>&nbsp;<a href=\"javascript:;\" onclick=\"addFilaFuncion()\" class=\"cssLabel\">Nueva Funci&oacute;n</a>");
      $sb->appendLine("</div>");
      $sb->appendLine("<div id=\"hMensajeErrorFunciones\"></div>");

      //retorna el texto
      $html = $sb->toString();
      return $html;
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * graba los datos de la pagina
   * @author VSR, 01/01/2011
   */
  private function grabarPagina($accion) {
    try {
      $nombrePagina = Utilidades::obtenerNombrePaginaActual($this);
      $idPagina = $this->Request["id"];
      $status = "";
      $textoMensaje = "";
      $grabadoConExito = true;
      $queryStringPagina = "";

      //grabar valores
      $textoMensaje .= $this->grabarDatosPagina($status, $idPagina);
      $textoMensaje .= $this->grabarFunciones($idPagina);

      if ($textoMensaje != "") {
        $grabadoConExito = false;
      } else {
        $grabadoConExito = true;
      }

      //muestra mensaje dependiendo si se grabo o no
      if ($grabadoConExito) {
        switch ($status) {
          case "ingresado":
            $textoMensaje = "{#INGRESADO}La p&aacute;gina fue ingresada satisfactoriamente.<br />";
            Utilidades::grabarSessionPorNombre("Estado".$nombrePagina, "INGRESADO");
            break;
          case "modificado":
            $textoMensaje = "{#MODIFICADO}La p&aacute;gina fue actualizada satisfactoriamente.<br />";
            Utilidades::grabarSessionPorNombre("Estado".$nombrePagina, "MODIFICADO");
            break;
          case "duplicado":
            $textoMensaje = "{#DUPLICADO}El Nombre de la Clase ya existe. Ingrese otro por favor.<br />";
            Utilidades::grabarSessionPorNombre("Estado".$nombrePagina, "DUPLICADO");
            break;
          case "error":
            $textoMensaje = "{#ERROR}Se produjo un error interno y no se pudo ingresar la p&aacute;gina. Intente nuevamente por favor.<br />";
            Utilidades::grabarSessionPorNombre("Estado".$nombrePagina, "ERROR");
            break;
          default:
            break;
        }
      } else {
        $textoMensaje = "{#ERROR}".$textoMensaje;
        Utilidades::grabarSessionPorNombre("Estado".$nombrePagina, "ERROR");
      }

      if (($status == "ingresado" || $status == "modificado") && $accion == Sistema::ACEPTAR ) {
        Utilidades::grabarSessionPorNombre("Estado".$nombrePagina, "");
        $this->Page->ClientScript->registerEndScript("cerrarPopUp", "cerrarPopUpPagina('".$idPagina."','1','".urlEncode($this->txtTitulo->Text)."');");
      } else {
        Utilidades::grabarSessionPorNombre("msg", $textoMensaje);
        //construye query string con los valores correspondientes
        $queryStringPagina = "&id=".$idPagina;
        $this->Response->redirect("index.php?page=".$nombrePagina.$queryStringPagina);
      }
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * graba o actualiza la pagina en base de datos
   * @param <type> $status
   * @param <type> $idPagina
   * @return string
   * @author VSR, 01/01/2011
   */
  private function grabarDatosPagina(&$status, &$idPagina) {
    $msgError = "";
    try {
      $titulo = Utilidades::isNull($this->txtTitulo->Text, "");
      $modulo = Utilidades::isNull($this->txtModulo->Text, "");
      $nombreClase = Utilidades::isNull($this->txtNombreClase->Text, "");
      $nombreCategoria = Utilidades::isNull($this->txtCategoria->Text, "");
      $activo = ($this->chkActivo->Checked) ? "1" : "0";
      $mostrarEnMenu = ($this->chkMostrarEnMenu->Checked) ? "1" : "0";
      $listadoIdPerfiles = $this->msPerfiles->valueListadoId();

      if ($idPagina == "0") {
        $arr = Pagina::grabarDatos($idPagina, $titulo, $modulo, $nombreClase, $nombreCategoria, $activo, $mostrarEnMenu, $listadoIdPerfiles);
      } else {
        $arr = Pagina::modificarDatos($idPagina, $titulo, $modulo, $nombreClase, $nombreCategoria, $activo, $mostrarEnMenu, $listadoIdPerfiles);
      }
      
      if(is_null($arr)){
        throw new Exception("Error al ejecutar Pagina->grabarDatosPagina()");
      } else {
        $idPagina = $arr[0]["IdPagina"];
        $status = $arr[0]["Status"];
        if ($status == "duplicado") { $idPagina = "0"; }
      }
    } catch (Exception $e) {
      $msgError = "Se produjo un error interno, no se pudo grabar la p&aacute;gina.<br/>";
      $idPagina = ($idPagina > 0) ? $idPagina : "0";
      $status = "error";
    }
    return $msgError;
  }

  /**
   * graba las funciones asociadas a la pagina
   * @param <type> $idPagina
   * @return string
   * @author VSR, 01/01/2011
   */
  private function grabarFunciones($idPagina) {
    $msgError = "";
    $aIdFuncion = $this->Request["txtIdFuncionAdd"];

    try {
      if (!is_null($aIdFuncion)) {
        $aNombre = $this->Request["txtNombreAdd"];
        $aLlave = $this->Request["txtLlaveAdd"];
        $aOrden = $this->Request["txtOrdenAdd"];
        $totalRegistros = count($aIdFuncion);
        $listadoIdFuncion = implode(",", $aIdFuncion);

        //-------------------------------------------------
        //elimina las funciones que no existen. enviar "listadoIdFuncion"
        $status = Pagina::eliminarFuncionesNoExistentes($idPagina, $listadoIdFuncion);
        if ($status == Sistema::CODIGO_SQL_ERROR) {
          throw new Exception("No se pudo eliminar las funciones de la pagina");
        }

        //-------------------------------------------------
        //guarda o actualiza las funciones existentes
        $status = "";
        for ($i = 0; $i <= $totalRegistros - 1; $i++) {
          $idFuncion = urlDecode($aIdFuncion[$i]);
          $nombre = urlDecode($aNombre[$i]);
          $llave = urlDecode($aLlave[$i]);
          $orden = urlDecode($aOrden[$i]);
          //graba las funciones
          if (!Utilidades::isNullOrEmpty($nombre)) {
            $status = Pagina::grabarFuncion($idPagina, $idFuncion, $nombre, $llave, $orden);
            if ($status == Sistema::CODIGO_SQL_ERROR) {
              throw new Exception("No se pudo grabar la función de la página");
            }
          }
        }
      }
    } catch (Exception $e) {
      $msgError = "Se produjo un error interno, no se pudo grabar las funciones.<br/>";
    }
    //retorna valor
    return $msgError;
  }

  /**
   * elimina los datos de una pagina
   * @param <type> $status
   * @param <type> $idPagina
   * @return string
   * @author VSR, 01/01/2011
   */
  private function eliminarPagina(&$status, $idPagina) {
    $msgError = "";

    try {
      $status = Pagina::eliminarDatos($idPagina);
    } catch (Exception $e) {
      $msgError = "Se produjo un error interno, no se pudo eliminar la p&aacute;gina.<br/>".$e->getMessage();
    }
    //retorna valor
    return $msgError;
  }

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Eventos Controles">
  public function onLoad($param) {
    parent::onLoad($param);
    //si no esta conectado entonces lo redirecciona al login
    if(!$this->usuarioLogueado()){
      $this->redireccionarLogin();
    }
    
    $idPagina = $this->Request["id"];
    $nombrePagina = $this->obtenerNombrePagina();
    $this->txtThemeBaseUrl->Value = $this->Page->Theme->BaseUrl;

    if(!$this->IsPostBack) {
      $this->obtenerDatos($idPagina);
      $this->inicializaControles($this->IsPostBack);
      $this->actualizaInterfaz();
      $this->mostrarMensajeUsuario();
      Utilidades::grabarSessionPorNombre("Estado".$nombrePagina, "");
    }
   
  }

  public function btnCrearClick($sender, $param){
    $this->grabarPagina(Sistema::APLICAR);
  }

  public function btnAplicarClick($sender, $param){
    $this->grabarPagina(Sistema::APLICAR);
  }

  public function btnAceptarClick($sender, $param){
    $this->grabarPagina(Sistema::ACEPTAR);
  }


  public function btnEliminarClick($sender, $param){
    $idPagina = $this->Request["id"];
    $status = "";
    $textoMensaje = "";
    $eliminadoConExito = true;
    $queryStringPagina = "";

    try {
      $nombrePagina = Utilidades::obtenerNombrePaginaActual($this);
      //elimina la pagina
      $textoMensaje .= $this->eliminarPagina($status, $idPagina);

      if ($textoMensaje != "") {
        $eliminadoConExito = false;
      } else {
        $eliminadoConExito = true;
      }

      //muestra mensaje dependiendo si se grabo o no
      if ($eliminadoConExito) {
        switch ($status) {
          case "eliminado":
            $textoMensaje = "{#ELIMINADO}La p&aacute;gina fue eliminada satisfactoriamente. Complete el formulario para ingresar una nueva.<br />";
            Utilidades::grabarSessionPorNombre("Estado".$nombrePagina, "ELIMINADO");
            break;
          case "error":
            $textoMensaje = "{#ERROR}Se produjo un error interno y no se pudo eliminar la p&aacute;gina. Intente nuevamente por favor.<br />";
            Utilidades::grabarSessionPorNombre("Estado".$nombrePagina, "ERROR");
            break;
        }
      } else {
        $textoMensaje = "{#ERROR}".$textoMensaje;
        Utilidades::grabarSessionPorNombre("Estado".$nombrePagina, "ERROR");
      }

      /*
       * DESCOMENTAR ESTE IF SI SE QUIERE QUE LA PAGINA SE CIERRE AUTOMATICAMENTE
      if ($status == "ingresado" || $status == "modificado") {
        Utilidades::grabarSessionPorNombre("Estado".$nombrePagina, "");
        $this->Page->ClientScript->registerEndScript("cerrarPopUp", "cerrarPopUpPagina('".$idPagina."','1','".urlEncode($this->txtTitulo->Text)."');");
      } else {
      */
        Utilidades::grabarSessionPorNombre("msg", $textoMensaje);
        //construye query string con los valores correspondientes
        $queryStringPagina = "&id=".(($status == "eliminado") ? "0" : $idPagina);
        $this->Response->redirect("index.php?page=".$nombrePagina.$queryStringPagina);
      /*}*/
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

//</editor-fold>

}

?>
